Zhou, F., Wang, R., Yuan, P., Ren, Y., Mao, Y., Li, R., Lian, Y., Li, J., Wen, L., Yan, L., et al. (2019). Reconstituting the transcriptome and DNA methylome landscapes of human implantation. Nature 572, 660–664.

  • BioProject Accession: PRJNA431392
  • GEO Accession: GSE109555



Load required packages.

library(tidyverse)
library(magrittr)
library(Matrix)
library(Seurat)
library(extrafont)
library(patchwork)
# library(tidylog)
Sys.Date()
## [1] "2020-07-31"

Data preparation

Functions loading

source(
    file = file.path(
        SCRIPT_DIR,
        "utilities.R"
    )
)

Data loading

cell_metadata <- read_csv(
    file = "../Supplementary_Table_2_Sample_Information.csv"
) %>%
    select(
        Sample,
        Day,
        IVC,
        Embryo,
        Ori_Day,
        Ori_Day_Emb,
        Sex,
        CNV,
        Lineage
    ) %>%
    rename_all(tolower)
## Parsed with column specification:
## cols(
##   Sample = col_character(),
##   Day = col_character(),
##   IVC = col_character(),
##   Embryo = col_character(),
##   chrM_Ratio = col_double(),
##   ERCC_Ratio = col_double(),
##   GeneNum = col_double(),
##   Ori_Day = col_character(),
##   Ori_Day_Emb = col_character(),
##   Sex = col_character(),
##   Pseudotime = col_double(),
##   CNV = col_character(),
##   Lineage = col_character()
## )

Prepare metadata for single cells.

embedding_5911 <- read_csv(
    file = "5911/embedding_ncomponents7_seed20200317.csv"
) %>%
    left_join(
        cell_metadata,
        by = c("cell" = "sample")
    ) %>%
    mutate(
        developmental_stage = str_replace(
            string = day,
            pattern = "D",
            replacement = "E"
        ),
        developmental_stage = factor(
            developmental_stage,
            levels = c(str_sort(unique(developmental_stage), numeric = TRUE))
        ),
        #
        lineage = ifelse(lineage == "MIX", "ysTE", lineage),
        lineage = factor(
            lineage,
            levels = c("EPI", "PE", "TE", "ysTE")
        )
    )
## Parsed with column specification:
## cols(
##   cell = col_character(),
##   batch = col_character(),
##   louvain = col_double(),
##   x_tsne = col_double(),
##   y_tsne = col_double(),
##   x_umap = col_double(),
##   y_umap = col_double(),
##   x_fitsne = col_double(),
##   y_fitsne = col_double(),
##   x_phate = col_double(),
##   y_phate = col_double(),
##   `x_min_dist=0.1` = col_double(),
##   `y_min_dist=0.1` = col_double(),
##   x_multicoretsne = col_double(),
##   y_multicoretsne = col_double()
## )
reticulate::py_discover_config()
## python:         /Users/jialei/.pyenv/shims/python
## libpython:      /Users/jialei/.pyenv/versions/3.8.2/lib/libpython3.8.dylib
## pythonhome:     /Users/jialei/.pyenv/versions/3.8.2:/Users/jialei/.pyenv/versions/3.8.2
## version:        3.8.2 (default, May 23 2020, 03:35:41)  [Clang 11.0.3 (clang-1103.0.32.62)]
## numpy:          /Users/jialei/.pyenv/versions/3.8.2/lib/python3.8/site-packages/numpy
## numpy_version:  1.19.0
## 
## NOTE: Python version was forced by RETICULATE_PYTHON
np <- reticulate::import("numpy", convert = TRUE)
scipy.sparse <- reticulate::import(module = "scipy.sparse", convert = TRUE)

matrix_readcount_use <- scipy.sparse$load_npz("../matrix_readcount.npz")
matrix_readcount_use_features <- np$load("../matrix_readcount_features.npy")
matrix_readcount_use_barcodes <- np$load("../matrix_readcount_barcodes.npy")
colnames(matrix_readcount_use) <- matrix_readcount_use_barcodes
rownames(matrix_readcount_use) <- matrix_readcount_use_features
matrix_readcount_use <- matrix_readcount_use[, embedding_5911$cell]

# calculate CPM
matrix_cpm_use <- calc_cpm(matrix_readcount_use)

stopifnot(
    dim(matrix_readcount_use) == dim(matrix_cpm_use)
)
print(dim(matrix_readcount_use))
## [1] 33538  5911
walk(list(embedding_5911, matrix_readcount_use, matrix_cpm_use), function(x) {
    print(object.size(x), units = "auto", standard = "SI")
})
## 2.1 MB
## 551.5 MB
## 551.5 MB

Profiling of human post-implantation

Clustering of 5911 single cells

Lineage and sex identification

customized_theme <- function(x = 0.035, y = 0.995) {
    theme(
        legend.text = element_text(family = "Arial", size = 6),
        legend.key.size = unit(3, "mm"),
        legend.margin = margin(t = 0, r = 0, b = 0, l = 0, unit = "mm"),
        legend.background = element_blank(),
        #
        legend.justification = c(0, 1),
        legend.position = c(x, y)
    )
}
p_embedding_5911_cluster <- plot_embedding(
    embedding = embedding_5911[, c("x_tsne", "y_tsne")],
    color_values = embedding_5911$louvain %>% as.factor(),
    label = "t-SNE; Cluster",
    # label_position = c(label_x, label_y),
    show_color_value_labels = TRUE,
    show_color_legend = FALSE,
    geom_point_size = 0.8,
    sort_values = FALSE
) +
    scale_color_manual(
        values = gg_color_hue(n = length(unique(embedding_5911$louvain)))
    )

# Extended Data Fig. 1i
p_embedding_5911_developmental_stage <- plot_embedding(
    embedding = embedding_5911[, c("x_tsne", "y_tsne")],
    color_values = embedding_5911$developmental_stage,
    label = "t-SNE; Developmental stage",
    # label_position = c(label_x, label_y),
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = 0.8,
    sort_values = FALSE
) +
    scale_color_manual(
        values = ggthemes::tableau_color_pal("Tableau 20")(
            length(levels(embedding_5911$developmental_stage))
        )
    ) +
    labs(color = NULL) +
    guides(
        colour = guide_legend(override.aes = list(size = 3))
    ) +
    customized_theme()

# Extended Data Fig. 1j
p_embedding_5911_lineage <- plot_embedding(
    embedding = embedding_5911[, c("x_tsne", "y_tsne")],
    color_values = embedding_5911$lineage,
    label = "t-SNE; Lineage",
    # label_position = c(label_x, label_y),
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = 0.8,
    sort_values = FALSE
) +
    scale_color_manual(
        values = ggthemes::tableau_color_pal("Tableau 10")(
            length(levels(embedding_5911$lineage))
        )
    ) +
    labs(color = NULL) +
    guides(
        colour = guide_legend(override.aes = list(size = 3))
    ) +
    customized_theme()

p_embedding_5911_cnv <- plot_embedding(
    embedding = embedding_5911[, c("x_tsne", "y_tsne")],
    color_values = embedding_5911$cnv,
    label = "t-SNE; CNV",
    # label_position = c(label_x, label_y),
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = 0.8,
    sort_values = FALSE
) +
    scale_color_manual(
        values = ggthemes::tableau_color_pal("Tableau 10")(8) %>% rev(.)
    ) +
    labs(color = NULL) +
    guides(
        colour = guide_legend(override.aes = list(size = 3))
    ) +
    customized_theme()

p_embedding_5911_sex <- plot_embedding(
    embedding = embedding_5911[, c("x_tsne", "y_tsne")],
    color_values = embedding_5911$sex,
    label = "t-SNE; Sex",
    # label_position = c(label_x, label_y),
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = 0.8,
    sort_values = FALSE
) +
    scale_color_manual(
        values = ggthemes::tableau_color_pal("Tableau 10")(6) %>% rev(.)
    ) +
    labs(color = NULL) +
    guides(
        colour = guide_legend(override.aes = list(size = 3))
    ) +
    customized_theme()

Summarize sequencing depth.

embedding_5911 %>%
    mutate(
        num_umis = colSums(matrix_readcount_use[, cell]),
        num_genes = colSums(matrix_readcount_use[, cell] > 0)
    ) %>%
    group_by(louvain) %>%
    summarise(
        num_cell = n(),
        median_umis = median(num_umis),
        median_genes = median(num_genes)
    ) %>%
    xtable::xtable()
## `summarise()` ungrouping output (override with `.groups` argument)

Summarize development stage info.

embedding_5911 %>%
    dplyr::count(developmental_stage) %>%
    print(nrow(.))
## # A tibble: 5 x 2
##   developmental_stage     n
##   <fct>               <int>
## 1 E6                    733
## 2 E8                   2077
## 3 E10                  1710
## 4 E12                   854
## 5 E14                   537

Summarize lineage info.

embedding_5911 %>%
    dplyr::count(lineage) %>%
    print(nrow(.))
## # A tibble: 4 x 2
##   lineage     n
##   <fct>   <int>
## 1 EPI       330
## 2 PE        179
## 3 TE       5363
## 4 ysTE       39

Summarize CNV info.

embedding_5911 %>%
    dplyr::count(cnv) %>%
    print(nrow(.))
## # A tibble: 2 x 2
##   cnv          n
##   <chr>    <int>
## 1 Abnormal  1955
## 2 Normal    3956

Summarize Sex info.

embedding_5911 %>%
    dplyr::count(sex) %>%
    print(nrow(.))
## # A tibble: 2 x 2
##   sex        n
##   <chr>  <int>
## 1 Female  2718
## 2 Male    3193

Select cells analyzed in Fig. 1a.

EMBRYOS_SELECTED <- c(
    "ha_D6_E2",
    "hm_D6_E1",
    "hm_D6_E2",
    "hm_D8_E2",
    "hm_D8_E3",
    "hm_D8_E5",
    "ha_D8_E1",
    "hm_D8_E1",
    "hv_D8_E1",
    "hv_D8_E2",
    "hv_D8_E3",
    "hv_D10_E6",
    "ha_D10_E1",
    "ha_D10_E2",
    "hm_D10_E4",
    "hm_D10_E9",
    "hv_D10_E7",
    "hv_D10_E8",
    "ha_D12_E1",
    "hv_D12_E1",
    "hv_D12_E2"
)
embedding_5911 %<>%
    mutate(
        selected = ifelse(ori_day_emb %in% EMBRYOS_SELECTED, 1, 0)
    )

embedding_5911 %>%
    dplyr::count(selected) %>%
    print(nrow(.))
## # A tibble: 2 x 2
##   selected     n
##      <dbl> <int>
## 1        0  2727
## 2        1  3184
p_embedding_5911_selected <- plot_embedding(
    embedding = embedding_5911[, c("x_tsne", "y_tsne")],
    color_values = embedding_5911$selected %>% as.factor(),
    label = "t-SNE; 3184 in Fig. 1c",
    # label_position = c(label_x, label_y),
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = 0.8,
    sort_values = FALSE
) +
    scale_color_manual(
        values = c("grey", "salmon")
    ) +
    labs(color = NULL) +
    guides(
        colour = guide_legend(override.aes = list(size = 3))
    ) +
    customized_theme()
purrr::reduce(list(
    p_embedding_5911_cluster,
    p_embedding_5911_developmental_stage,
    p_embedding_5911_lineage,
    p_embedding_5911_cnv,
    p_embedding_5911_sex,
    p_embedding_5911_selected
), `+`) +
    plot_layout(ncol = 3) +
    plot_annotation(
        theme = theme(plot.margin = margin())
    )

Expression

t-SNE

Extended Data Fig. 2abc

FEATURES_SELECTED <- c(
    "POU5F1",
    "NANOG",
    "SOX2",
    "GATA4",
    "PDGFRA",
    "FOXA2",
    "GATA3",
    "DAB2",
    "TFAP2C"
)

FEATURES_SELECTED <- rownames(matrix_readcount_use)[
    gene_symbo_info$X2 %in% FEATURES_SELECTED
]
map(FEATURES_SELECTED, function(x) {
    plot_embedding_value(
        embedding = embedding_5911[, c("x_tsne", "y_tsne")],
        color_values = matrix_cpm_use[x, embedding_5911$cell],
        colorbar_position = c(0.86, 0.28),
        label = str_c("t-SNE; ", x),
        label_position = NULL,
        # label_position = c(label_x, label_y),
        geom_point_size = 1,
        sort_values = TRUE,
        FUN = NULL
    )
}) %>%
    purrr::reduce(`+`) +
    plot_layout(nrow = 3, byrow = TRUE) +
    plot_annotation(theme = theme(plot.margin = margin()))

Clustering of 3184 single cells

Prepare metadata for single cells.

embedding_3184 <- read_csv(
    file = "embedding_ncomponents8_seed20200317.csv"
) %>%
    select(cell, batch, louvain, x_tsne, y_tsne) %>%
    left_join(
        embedding_5911 %>%
            select(cell, day:last_col()),
        by = "cell"
    )
## Parsed with column specification:
## cols(
##   cell = col_character(),
##   batch = col_character(),
##   louvain = col_double(),
##   x_tsne = col_double(),
##   y_tsne = col_double(),
##   x_umap = col_double(),
##   y_umap = col_double(),
##   x_fitsne = col_double(),
##   y_fitsne = col_double(),
##   x_phate = col_double(),
##   y_phate = col_double(),
##   `x_min_dist=0.1` = col_double(),
##   `y_min_dist=0.1` = col_double(),
##   x_multicoretsne = col_double(),
##   y_multicoretsne = col_double()
## )

Lineage and sex identification

Fig. 1cd

p_embedding_3184_cluster <- plot_embedding(
    embedding = embedding_3184[, c("x_tsne", "y_tsne")],
    color_values = embedding_3184$louvain %>% as.factor(),
    label = "t-SNE; Cluster",
    # label_position = c(label_x, label_y),
    show_color_value_labels = TRUE,
    show_color_legend = FALSE,
    geom_point_size = 0.8,
    sort_values = FALSE
) +
    scale_color_manual(
        values = gg_color_hue(n = length(unique(embedding_3184$louvain)))
    )

p_embedding_3184_developmental_stage <- plot_embedding(
    embedding = embedding_3184[, c("x_tsne", "y_tsne")],
    color_values = embedding_3184$developmental_stage,
    label = "t-SNE; Developmental stage",
    # label_position = c(label_x, label_y),
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = 0.8,
    sort_values = FALSE
) +
    scale_color_manual(
        values = ggthemes::tableau_color_pal("Tableau 20")(
            length(levels(embedding_3184$developmental_stage))
        )
    ) +
    labs(color = NULL) +
    guides(
        colour = guide_legend(override.aes = list(size = 3))
    ) +
    customized_theme(x = 0.75, y = 0.995)

p_embedding_3184_lineage <- plot_embedding(
    embedding = embedding_3184[, c("x_tsne", "y_tsne")],
    color_values = embedding_3184$lineage,
    label = "t-SNE; Lineage",
    # label_position = c(label_x, label_y),
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = 0.8,
    sort_values = FALSE
) +
    scale_color_manual(
        values = ggthemes::tableau_color_pal("Tableau 10")(
            length(levels(embedding_3184$lineage))
        )
    ) +
    labs(color = NULL) +
    guides(
        colour = guide_legend(override.aes = list(size = 3))
    ) +
    customized_theme(x = 0.75, y = 0.995)

p_embedding_3184_cnv <- plot_embedding(
    embedding = embedding_3184[, c("x_tsne", "y_tsne")],
    color_values = embedding_3184$cnv,
    label = "t-SNE; CNV",
    # label_position = c(label_x, label_y),
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = 0.8,
    sort_values = FALSE
) +
    scale_color_manual(
        values = ggthemes::tableau_color_pal("Tableau 10")(
            8
        ) %>% rev(.)
    ) +
    labs(color = NULL) +
    guides(
        colour = guide_legend(override.aes = list(size = 3))
    ) +
    customized_theme(x = 0.75, y = 0.995)

p_embedding_3184_sex <- plot_embedding(
    embedding = embedding_3184[, c("x_tsne", "y_tsne")],
    color_values = embedding_3184$sex,
    label = "t-SNE; Sex",
    # label_position = c(label_x, label_y),
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = 0.8,
    sort_values = FALSE
) +
    scale_color_manual(
        values = ggthemes::tableau_color_pal("Tableau 10")(
            6
        ) %>% rev(.)
    ) +
    labs(color = NULL) +
    guides(
        colour = guide_legend(override.aes = list(size = 3))
    ) +
    customized_theme(x = 0.75, y = 0.995)
# x = 0.035, y = 0.995

p_embedding_3184_umi <- plot_embedding_value(
    embedding = embedding_3184[, c("x_tsne", "y_tsne")],
    color_values = matrix_readcount_use[, embedding_3184$cell] %>%
        colSums(),
    colorbar_position = c(0.85, 0.95),
    label = "UMI distribution",
    label_position = NULL,
    # label_position = c(label_x, label_y),
    geom_point_size = 0.8,
    sort_values = FALSE,
    FUN = function(x) log10(x)
)
purrr::reduce(list(
    p_embedding_3184_cluster,
    p_embedding_3184_umi,
    p_embedding_3184_developmental_stage,
    p_embedding_3184_lineage,
    p_embedding_3184_cnv,
    p_embedding_3184_sex
), `+`) +
    plot_layout(ncol = 3) +
    plot_annotation(
        theme = theme(plot.margin = margin())
    )

Expression

t-SNE

FEATURES_SELECTED
## [1] "ENSG00000181449_SOX2"   "ENSG00000134853_PDGFRA" "ENSG00000153071_DAB2"  
## [4] "ENSG00000204531_POU5F1" "ENSG00000136574_GATA4"  "ENSG00000107485_GATA3" 
## [7] "ENSG00000111704_NANOG"  "ENSG00000125798_FOXA2"  "ENSG00000087510_TFAP2C"
map(FEATURES_SELECTED, function(x) {
    plot_embedding_value(
        embedding = embedding_3184[, c("x_tsne", "y_tsne")],
        color_values = matrix_cpm_use[x, embedding_3184$cell],
        colorbar_position = c(0.85, 0.95),
        label = str_c("t-SNE; ", x),
        label_position = NULL,
        # label_position = c(label_x, label_y),
        geom_point_size = 1,
        sort_values = TRUE,
        FUN = NULL
    )
}) %>%
    purrr::reduce(`+`) +
    plot_layout(nrow = 3, byrow = TRUE) +
    plot_annotation(theme = theme(plot.margin = margin()))

Heatmap

flip_plot <- function(data, x) {
  data %>% 
    mutate("{{x}}" := 0 - {{x}})
}

R session info

sessioninfo::session_info()
## ─ Session info ───────────────────────────────────────────────────────────────
##  setting  value                       
##  version  R version 4.0.2 (2020-06-22)
##  os       macOS Catalina 10.15.6      
##  system   x86_64, darwin19.5.0        
##  ui       unknown                     
##  language (EN)                        
##  collate  en_US.UTF-8                 
##  ctype    en_US.UTF-8                 
##  tz       America/Chicago             
##  date     2020-07-31                  
## 
## ─ Packages ───────────────────────────────────────────────────────────────────
##  package        * version     date       lib
##  abind            1.4-5       2016-07-21 [1]
##  ape              5.4         2020-06-03 [1]
##  assertthat       0.2.1       2019-03-21 [1]
##  backports        1.1.8       2020-06-17 [1]
##  blob             1.2.1       2020-01-20 [1]
##  broom            0.7.0.9001  2020-07-28 [1]
##  cellranger       1.1.0       2016-07-27 [1]
##  cli              2.0.2       2020-02-28 [1]
##  cluster          2.1.0       2019-06-19 [2]
##  codetools        0.2-16      2018-12-24 [2]
##  colorspace       1.4-1       2019-03-18 [1]
##  cowplot          1.0.0       2019-07-11 [1]
##  crayon           1.3.4       2017-09-16 [1]
##  data.table       1.13.0      2020-07-24 [1]
##  DBI              1.1.0       2019-12-15 [1]
##  dbplyr           1.4.4.9000  2020-07-28 [1]
##  deldir           0.1-28      2020-07-15 [1]
##  digest           0.6.25      2020-02-23 [1]
##  dplyr          * 1.0.1       2020-07-28 [1]
##  ellipsis         0.3.1.9000  2020-07-18 [1]
##  evaluate         0.14        2019-05-28 [1]
##  extrafont      * 0.17        2014-12-08 [1]
##  extrafontdb      1.0         2012-06-11 [1]
##  fansi            0.4.1       2020-01-08 [1]
##  farver           2.0.3       2020-01-16 [1]
##  fastmap          1.0.1       2019-10-08 [1]
##  fitdistrplus     1.1-1       2020-05-19 [1]
##  forcats        * 0.5.0.9000  2020-05-28 [1]
##  fs               1.4.2.9000  2020-07-29 [1]
##  future           1.18.0      2020-07-09 [1]
##  future.apply     1.6.0       2020-07-01 [1]
##  generics         0.0.2       2018-11-29 [1]
##  ggplot2        * 3.3.2.9000  2020-07-29 [1]
##  ggrepel          0.9.0       2020-07-24 [1]
##  ggridges         0.5.2       2020-01-12 [1]
##  ggthemes         4.2.0       2019-05-13 [1]
##  globals          0.12.5      2019-12-07 [1]
##  glue             1.4.1.9000  2020-07-07 [1]
##  goftest          1.2-2       2019-12-02 [1]
##  gridExtra        2.3         2017-09-09 [1]
##  gtable           0.3.0       2019-03-25 [1]
##  haven            2.3.1       2020-06-01 [1]
##  hms              0.5.3       2020-01-08 [1]
##  htmltools        0.5.0       2020-06-16 [1]
##  htmlwidgets      1.5.1       2019-10-08 [1]
##  httpuv           1.5.4       2020-06-06 [1]
##  httr             1.4.2       2020-07-20 [1]
##  ica              1.0-2       2018-05-24 [1]
##  igraph           1.2.5       2020-03-19 [1]
##  irlba            2.3.3       2019-02-05 [1]
##  jsonlite         1.7.0       2020-06-25 [1]
##  KernSmooth       2.23-17     2020-04-26 [2]
##  knitr            1.29        2020-06-23 [1]
##  labeling         0.3         2014-08-23 [1]
##  later            1.1.0.1     2020-06-05 [1]
##  lattice          0.20-41     2020-04-02 [2]
##  lazyeval         0.2.2       2019-03-15 [1]
##  leiden           0.3.3       2020-02-04 [1]
##  lifecycle        0.2.0       2020-03-06 [1]
##  listenv          0.8.0       2019-12-05 [1]
##  lmtest           0.9-37      2019-04-30 [1]
##  lubridate        1.7.9       2020-07-11 [1]
##  magrittr       * 1.5.0.9000  2020-07-27 [1]
##  MASS             7.3-51.6    2020-04-26 [2]
##  Matrix         * 1.2-18      2019-11-27 [1]
##  mgcv             1.8-31      2019-11-09 [2]
##  mime             0.9         2020-02-04 [1]
##  miniUI           0.1.1.1     2018-05-18 [1]
##  modelr           0.1.8.9000  2020-05-19 [1]
##  munsell          0.5.0       2018-06-12 [1]
##  nlme             3.1-148     2020-05-24 [2]
##  patchwork      * 1.0.1.9000  2020-06-22 [1]
##  pbapply          1.4-2       2019-08-31 [1]
##  pillar           1.4.6.9000  2020-07-21 [1]
##  pkgconfig        2.0.3       2019-09-22 [1]
##  plotly           4.9.2.1     2020-04-04 [1]
##  plyr             1.8.6       2020-03-03 [1]
##  png              0.1-7       2013-12-03 [1]
##  polyclip         1.10-0      2019-03-14 [1]
##  promises         1.1.1       2020-06-09 [1]
##  purrr          * 0.3.4.9000  2020-07-29 [1]
##  R6               2.4.1.9000  2020-07-18 [1]
##  RANN             2.6.1       2019-01-08 [1]
##  RColorBrewer     1.1-2       2014-12-07 [1]
##  Rcpp             1.0.5       2020-07-06 [1]
##  RcppAnnoy        0.0.16      2020-03-08 [1]
##  readr          * 1.3.1.9000  2020-07-16 [1]
##  readxl           1.3.1.9000  2020-05-28 [1]
##  reprex           0.3.0       2019-05-16 [1]
##  reshape2         1.4.4       2020-04-09 [1]
##  reticulate       1.16        2020-05-27 [1]
##  rlang          * 0.4.7.9000  2020-07-29 [1]
##  rmarkdown        2.3.3       2020-07-25 [1]
##  ROCR             1.0-11      2020-05-02 [1]
##  rpart            4.1-15      2019-04-12 [2]
##  rstudioapi       0.11.0-9000 2020-07-15 [1]
##  rsvd             1.0.3       2020-02-17 [1]
##  Rtsne            0.16        2020-07-03 [1]
##  Rttf2pt1         1.3.8       2020-01-10 [1]
##  rvest            0.3.6       2020-07-25 [1]
##  scales           1.1.1.9000  2020-07-24 [1]
##  sctransform      0.2.1       2019-12-17 [1]
##  sessioninfo      1.1.1.9000  2020-07-18 [1]
##  Seurat         * 3.2.0.9004  2020-07-28 [1]
##  shiny            1.5.0.9001  2020-07-28 [1]
##  spatstat         1.64-1      2020-05-12 [1]
##  spatstat.data    1.4-3       2020-01-26 [1]
##  spatstat.utils   1.17-0      2020-02-07 [1]
##  stringi          1.4.6       2020-02-17 [1]
##  stringr        * 1.4.0.9000  2020-06-01 [1]
##  styler         * 1.3.2.9000  2020-07-25 [1]
##  survival         3.2-3       2020-06-13 [2]
##  tensor           1.5         2012-05-05 [1]
##  tibble         * 3.0.3.9000  2020-07-21 [1]
##  tidyr          * 1.1.0.9000  2020-07-23 [1]
##  tidyselect       1.1.0.9000  2020-07-11 [1]
##  tidyverse      * 1.3.0.9000  2020-06-01 [1]
##  utf8             1.1.4       2018-05-24 [1]
##  uwot             0.1.8.9000  2020-07-19 [1]
##  vctrs            0.3.2.9000  2020-07-23 [1]
##  viridisLite      0.3.0       2018-02-01 [1]
##  withr            2.2.0       2020-04-20 [1]
##  xfun             0.16        2020-07-24 [1]
##  xml2             1.3.2       2020-04-23 [1]
##  xtable           1.8-4       2019-04-21 [1]
##  yaml             2.2.1       2020-02-01 [1]
##  zoo              1.8-8       2020-05-02 [1]
##  source                               
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.1)                       
##  CRAN (R 4.0.0)                       
##  Github (tidymodels/broom@762e3ad)    
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.0)                       
##  Github (tidyverse/dbplyr@a6ed629)    
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.0)                       
##  Github (tidyverse/dplyr@48aead4)     
##  Github (r-lib/ellipsis@57a5071)      
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  Github (tidyverse/forcats@ab81d1b)   
##  Github (r-lib/fs@9e143f9)            
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.0)                       
##  Github (tidyverse/ggplot2@b4bc293)   
##  Github (slowkow/ggrepel@4d0ef50)     
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  Github (tidyverse/glue@205f18b)      
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.1)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.2)                       
##  Github (tidyverse/lubridate@de2ee09) 
##  Github (tidyverse/magrittr@0d14075)  
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  Github (tidyverse/modelr@16168e0)    
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.2)                       
##  Github (thomasp85/patchwork@82a5e03) 
##  CRAN (R 4.0.0)                       
##  Github (r-lib/pillar@8aef8f2)        
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.0)                       
##  Github (tidyverse/purrr@74d5d67)     
##  Github (r-lib/R6@1415d11)            
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.0)                       
##  Github (tidyverse/readr@2ab51b2)     
##  Github (tidyverse/readxl@3815961)    
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.2)                       
##  Github (r-lib/rlang@1fb41d7)         
##  Github (rstudio/rmarkdown@204aa41)   
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.2)                       
##  Github (rstudio/rstudioapi@ed5dd25)  
##  CRAN (R 4.0.0)                       
##  Github (jkrijthe/Rtsne@14b195f)      
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.2)                       
##  Github (r-lib/scales@9ff4757)        
##  CRAN (R 4.0.0)                       
##  Github (r-lib/sessioninfo@791705b)   
##  Github (satijalab/seurat@ad0008e)    
##  Github (rstudio/shiny@766b910)       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.0)                       
##  Github (tidyverse/stringr@f70c4ba)   
##  Github (r-lib/styler@16d815e)        
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.2)                       
##  Github (tidyverse/tibble@b4eec19)    
##  Github (tidyverse/tidyr@3f49600)     
##  Github (tidyverse/tidyselect@69fdc96)
##  Github (hadley/tidyverse@8a0bb99)    
##  CRAN (R 4.0.0)                       
##  Github (jlmelville/uwot@13a198f)     
##  Github (r-lib/vctrs@df8a659)         
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.2)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
##  CRAN (R 4.0.0)                       
## 
## [1] /usr/local/lib/R/4.0/site-library
## [2] /usr/local/Cellar/r/4.0.2_1/lib/R/library